#pragma once
#include <stdlib.h>
#include <stdint.h>

typedef size_t GType;
typedef void *GVaClosureMarshal;
static unsigned int _array_length(void* _array)
{
	void** array = (void**)_array;
	unsigned int i=0;
	while (array && array[i] != 0) i++;
	return i;
}

typedef struct _GArray GArray;
struct _GArray { uint8_t _data[16]; };
typedef uint32_t GAsciiType;
typedef struct _GAsyncQueue GAsyncQueue;
struct _GAsyncQueue {};
typedef struct _GBookmarkFile GBookmarkFile;
struct _GBookmarkFile {};
typedef uint32_t GBookmarkFileError;
typedef struct _GByteArray GByteArray;
struct _GByteArray { uint8_t _data[16]; };
typedef struct _GBytes GBytes;
struct _GBytes {};
typedef struct _GChecksum GChecksum;
struct _GChecksum {};
typedef uint32_t GChecksumType;
typedef void* GChildWatchFunc;
typedef void* GCompareDataFunc;
typedef void* GCompareFunc;
typedef struct _GCond GCond;
struct _GCond { uint8_t _data[16]; };
typedef uint32_t GConvertError;
typedef void* GCopyFunc;
typedef struct _GData GData;
struct _GData {};
typedef void* GDataForeachFunc;
typedef struct _GDate GDate;
struct _GDate { uint8_t _data[24]; };
typedef uint32_t GDateDMY;
typedef uint32_t GDateMonth;
typedef struct _GDateTime GDateTime;
struct _GDateTime {};
typedef uint32_t GDateWeekday;
typedef struct _GDebugKey GDebugKey;
struct _GDebugKey { uint8_t _data[16]; };
typedef void* GDestroyNotify;
typedef struct _GDir GDir;
struct _GDir {};
typedef struct _GDoubleIEEE754 GDoubleIEEE754;
struct _GDoubleIEEE754 { uint8_t _data[8]; };
typedef void* GDuplicateFunc;
typedef void* GEqualFunc;
typedef struct _GError GError;
struct _GError { uint8_t _data[16]; };
typedef uint32_t GErrorType;
typedef uint32_t GFileError;
typedef uint32_t GFileTest;
typedef struct _GFloatIEEE754 GFloatIEEE754;
struct _GFloatIEEE754 { uint8_t _data[4]; };
typedef uint32_t GFormatSizeFlags;
typedef void* GFreeFunc;
typedef void* GFunc;
typedef void* GHFunc;
typedef void* GHRFunc;
typedef void* GHashFunc;
typedef struct _GHashTable GHashTable;
struct _GHashTable {};
typedef struct _GHashTableIter GHashTableIter;
struct _GHashTableIter { uint8_t _data[40]; };
typedef struct _GHmac GHmac;
struct _GHmac {};
typedef struct _GHook GHook;
struct _GHook { uint8_t _data[64]; };
typedef void* GHookCheckFunc;
typedef void* GHookCheckMarshaller;
typedef void* GHookCompareFunc;
typedef void* GHookFinalizeFunc;
typedef void* GHookFindFunc;
typedef uint32_t GHookFlagMask;
typedef void* GHookFunc;
typedef struct _GHookList GHookList;
struct _GHookList { uint8_t _data[56]; };
typedef void* GHookMarshaller;
typedef struct _GIConv GIConv;
struct _GIConv {};
typedef struct _GIOChannel GIOChannel;
struct _GIOChannel { uint8_t _data[136]; };
typedef uint32_t GIOChannelError;
typedef uint32_t GIOCondition;
typedef uint32_t GIOError;
typedef uint32_t GIOFlags;
typedef void* GIOFunc;
typedef struct _GIOFuncs GIOFuncs;
struct _GIOFuncs { uint8_t _data[64]; };
typedef uint32_t GIOStatus;
typedef struct _GKeyFile GKeyFile;
struct _GKeyFile {};
typedef uint32_t GKeyFileError;
typedef uint32_t GKeyFileFlags;
typedef struct _GList GList;
struct _GList { uint8_t _data[24]; };
typedef struct _GLogField GLogField;
struct _GLogField { uint8_t _data[24]; };
typedef void* GLogFunc;
typedef int32_t GLogLevelFlags;
typedef void* GLogWriterFunc;
typedef uint32_t GLogWriterOutput;
typedef struct _GMainContext GMainContext;
struct _GMainContext {};
typedef struct _GMainLoop GMainLoop;
struct _GMainLoop {};
typedef struct _GMappedFile GMappedFile;
struct _GMappedFile {};
typedef uint32_t GMarkupCollectType;
typedef uint32_t GMarkupError;
typedef struct _GMarkupParseContext GMarkupParseContext;
struct _GMarkupParseContext {};
typedef uint32_t GMarkupParseFlags;
typedef struct _GMarkupParser GMarkupParser;
struct _GMarkupParser { uint8_t _data[40]; };
typedef struct _GMatchInfo GMatchInfo;
struct _GMatchInfo {};
typedef struct _GMemVTable GMemVTable;
struct _GMemVTable { uint8_t _data[48]; };
typedef struct _GMutex GMutex;
struct _GMutex { uint8_t _data[8]; };
typedef struct _GNode GNode;
struct _GNode { uint8_t _data[40]; };
typedef void* GNodeForeachFunc;
typedef void* GNodeTraverseFunc;
typedef uint32_t GNormalizeMode;
typedef struct _GOnce GOnce;
struct _GOnce { uint8_t _data[16]; };
typedef uint32_t GOnceStatus;
typedef uint32_t GOptionArg;
typedef void* GOptionArgFunc;
typedef struct _GOptionContext GOptionContext;
struct _GOptionContext {};
typedef struct _GOptionEntry GOptionEntry;
struct _GOptionEntry { uint8_t _data[48]; };
typedef uint32_t GOptionError;
typedef void* GOptionErrorFunc;
typedef uint32_t GOptionFlags;
typedef struct _GOptionGroup GOptionGroup;
struct _GOptionGroup {};
typedef void* GOptionParseFunc;
typedef struct _GPatternSpec GPatternSpec;
struct _GPatternSpec {};
typedef struct _GPollFD GPollFD;
struct _GPollFD { uint8_t _data[8]; };
typedef void* GPollFunc;
typedef void* GPrintFunc;
typedef struct _GPrivate GPrivate;
struct _GPrivate { uint8_t _data[32]; };
typedef struct _GPtrArray GPtrArray;
struct _GPtrArray { uint8_t _data[16]; };
typedef struct _GQueue GQueue;
struct _GQueue { uint8_t _data[24]; };
typedef struct _GRWLock GRWLock;
struct _GRWLock { uint8_t _data[16]; };
typedef struct _GRand GRand;
struct _GRand {};
typedef struct _GRecMutex GRecMutex;
struct _GRecMutex { uint8_t _data[16]; };
typedef struct _GRegex GRegex;
struct _GRegex {};
typedef uint32_t GRegexCompileFlags;
typedef uint32_t GRegexError;
typedef void* GRegexEvalCallback;
typedef uint32_t GRegexMatchFlags;
typedef struct _GSList GSList;
struct _GSList { uint8_t _data[16]; };
typedef struct _GScanner GScanner;
struct _GScanner { uint8_t _data[144]; };
typedef struct _GScannerConfig GScannerConfig;
struct _GScannerConfig { uint8_t _data[128]; };
typedef void* GScannerMsgFunc;
typedef uint32_t GSeekType;
typedef struct _GSequence GSequence;
struct _GSequence {};
typedef struct _GSequenceIter GSequenceIter;
struct _GSequenceIter {};
typedef void* GSequenceIterCompareFunc;
typedef uint32_t GShellError;
typedef uint32_t GSliceConfig;
typedef struct _GSource GSource;
struct _GSource { uint8_t _data[96]; };
typedef struct _GSourceCallbackFuncs GSourceCallbackFuncs;
struct _GSourceCallbackFuncs { uint8_t _data[24]; };
typedef void* GSourceDummyMarshal;
typedef void* GSourceFunc;
typedef struct _GSourceFuncs GSourceFuncs;
struct _GSourceFuncs { uint8_t _data[48]; };
typedef struct _GSourcePrivate GSourcePrivate;
struct _GSourcePrivate {};
typedef void* GSpawnChildSetupFunc;
typedef uint32_t GSpawnError;
typedef uint32_t GSpawnFlags;
typedef struct _GStatBuf GStatBuf;
struct _GStatBuf {};
typedef struct _GString GString;
struct _GString { uint8_t _data[24]; };
typedef struct _GStringChunk GStringChunk;
struct _GStringChunk {};
typedef struct _GTestCase GTestCase;
struct _GTestCase {};
typedef struct _GTestConfig GTestConfig;
struct _GTestConfig { uint8_t _data[24]; };
typedef void* GTestDataFunc;
typedef uint32_t GTestFileType;
typedef void* GTestFixtureFunc;
typedef void* GTestFunc;
typedef struct _GTestLogBuffer GTestLogBuffer;
struct _GTestLogBuffer { uint8_t _data[16]; };
typedef void* GTestLogFatalFunc;
typedef struct _GTestLogMsg GTestLogMsg;
struct _GTestLogMsg { uint8_t _data[32]; };
typedef uint32_t GTestLogType;
typedef uint32_t GTestSubprocessFlags;
typedef struct _GTestSuite GTestSuite;
struct _GTestSuite {};
typedef uint32_t GTestTrapFlags;
typedef struct _GThread GThread;
struct _GThread {};
typedef uint32_t GThreadError;
typedef void* GThreadFunc;
typedef struct _GThreadPool GThreadPool;
struct _GThreadPool { uint8_t _data[24]; };
typedef uint32_t GTimeType;
typedef struct _GTimeVal GTimeVal;
struct _GTimeVal { uint8_t _data[16]; };
typedef struct _GTimeZone GTimeZone;
struct _GTimeZone {};
typedef struct _GTimer GTimer;
struct _GTimer {};
typedef uint32_t GTokenType;
typedef struct _GTokenValue GTokenValue;
struct _GTokenValue { uint8_t _data[8]; };
typedef void* GTranslateFunc;
typedef struct _GTrashStack GTrashStack;
struct _GTrashStack { uint8_t _data[8]; };
typedef uint32_t GTraverseFlags;
typedef void* GTraverseFunc;
typedef uint32_t GTraverseType;
typedef struct _GTree GTree;
struct _GTree {};
typedef uint32_t GUnicodeBreakType;
typedef int32_t GUnicodeScript;
typedef uint32_t GUnicodeType;
typedef void* GUnixFDSourceFunc;
typedef uint32_t GUserDirectory;
typedef struct _GVariant GVariant;
struct _GVariant {};
typedef struct _GVariantBuilder GVariantBuilder;
struct _GVariantBuilder {};
typedef uint32_t GVariantClass;
typedef struct _GVariantDict GVariantDict;
struct _GVariantDict {};
typedef uint32_t GVariantParseError;
typedef struct _GVariantType GVariantType;
struct _GVariantType {};
typedef void* GVoidFunc;
typedef void* GBaseFinalizeFunc;
typedef void* GBaseInitFunc;
typedef struct _GBinding GBinding;
typedef uint32_t GBindingFlags;
typedef void* GBindingTransformFunc;
typedef void* GBoxedCopyFunc;
typedef void* GBoxedFreeFunc;
typedef struct _GCClosure GCClosure;
struct _GCClosure { uint8_t _data[72]; };
typedef void* GCallback;
typedef void* GClassFinalizeFunc;
typedef void* GClassInitFunc;
typedef struct _GClosure GClosure;
struct _GClosure { uint8_t _data[64]; };
typedef void* GClosureMarshal;
typedef void* GClosureNotify;
typedef struct _GClosureNotifyData GClosureNotifyData;
struct _GClosureNotifyData { uint8_t _data[16]; };
typedef uint32_t GConnectFlags;
typedef struct _GEnumClass GEnumClass;
struct _GEnumClass { uint8_t _data[32]; };
typedef struct _GEnumValue GEnumValue;
struct _GEnumValue { uint8_t _data[24]; };
typedef struct _GFlagsClass GFlagsClass;
struct _GFlagsClass { uint8_t _data[24]; };
typedef struct _GFlagsValue GFlagsValue;
struct _GFlagsValue { uint8_t _data[24]; };
typedef struct _GInitiallyUnowned GInitiallyUnowned;
typedef struct _GInitiallyUnownedClass GInitiallyUnownedClass;
struct _GInitiallyUnownedClass { uint8_t _data[136]; };
typedef void* GInstanceInitFunc;
typedef void* GInterfaceFinalizeFunc;
typedef struct _GInterfaceInfo GInterfaceInfo;
struct _GInterfaceInfo { uint8_t _data[24]; };
typedef void* GInterfaceInitFunc;
typedef struct _GObject GObject;
typedef struct _GObjectClass GObjectClass;
struct _GObjectClass { uint8_t _data[136]; };
typedef struct _GObjectConstructParam GObjectConstructParam;
struct _GObjectConstructParam { uint8_t _data[16]; };
typedef void* GObjectFinalizeFunc;
typedef void* GObjectGetPropertyFunc;
typedef void* GObjectSetPropertyFunc;
typedef uint32_t GParamFlags;
typedef struct _GParamSpec GParamSpec;
typedef struct _GParamSpecBoolean GParamSpecBoolean;
typedef struct _GParamSpecBoxed GParamSpecBoxed;
typedef struct _GParamSpecChar GParamSpecChar;
typedef struct _GParamSpecClass GParamSpecClass;
struct _GParamSpecClass { uint8_t _data[80]; };
typedef struct _GParamSpecDouble GParamSpecDouble;
typedef struct _GParamSpecEnum GParamSpecEnum;
typedef struct _GParamSpecFlags GParamSpecFlags;
typedef struct _GParamSpecFloat GParamSpecFloat;
typedef struct _GParamSpecGType GParamSpecGType;
typedef struct _GParamSpecInt GParamSpecInt;
typedef struct _GParamSpecInt64 GParamSpecInt64;
typedef struct _GParamSpecLong GParamSpecLong;
typedef struct _GParamSpecObject GParamSpecObject;
typedef struct _GParamSpecOverride GParamSpecOverride;
typedef struct _GParamSpecParam GParamSpecParam;
typedef struct _GParamSpecPointer GParamSpecPointer;
typedef struct _GParamSpecPool GParamSpecPool;
struct _GParamSpecPool {};
typedef struct _GParamSpecString GParamSpecString;
typedef struct _GParamSpecTypeInfo GParamSpecTypeInfo;
struct _GParamSpecTypeInfo { uint8_t _data[56]; };
typedef struct _GParamSpecUChar GParamSpecUChar;
typedef struct _GParamSpecUInt GParamSpecUInt;
typedef struct _GParamSpecUInt64 GParamSpecUInt64;
typedef struct _GParamSpecULong GParamSpecULong;
typedef struct _GParamSpecUnichar GParamSpecUnichar;
typedef struct _GParamSpecValueArray GParamSpecValueArray;
typedef struct _GParamSpecVariant GParamSpecVariant;
typedef struct _GParameter GParameter;
struct _GParameter { uint8_t _data[32]; };
typedef void* GSignalAccumulator;
typedef void* GSignalEmissionHook;
typedef uint32_t GSignalFlags;
typedef struct _GSignalInvocationHint GSignalInvocationHint;
struct _GSignalInvocationHint { uint8_t _data[12]; };
typedef uint32_t GSignalMatchType;
typedef struct _GSignalQuery GSignalQuery;
struct _GSignalQuery { uint8_t _data[56]; };
typedef void* GToggleNotify;
typedef struct _GTypeCValue GTypeCValue;
struct _GTypeCValue { uint8_t _data[8]; };
typedef struct _GTypeClass GTypeClass;
struct _GTypeClass { uint8_t _data[8]; };
typedef void* GTypeClassCacheFunc;
typedef uint32_t GTypeDebugFlags;
typedef uint32_t GTypeFlags;
typedef uint32_t GTypeFundamentalFlags;
typedef struct _GTypeFundamentalInfo GTypeFundamentalInfo;
struct _GTypeFundamentalInfo { uint8_t _data[4]; };
typedef struct _GTypeInfo GTypeInfo;
struct _GTypeInfo { uint8_t _data[72]; };
typedef struct _GTypeInstance GTypeInstance;
struct _GTypeInstance { uint8_t _data[8]; };
typedef struct _GTypeInterface GTypeInterface;
struct _GTypeInterface { uint8_t _data[16]; };
typedef void* GTypeInterfaceCheckFunc;
typedef struct _GTypeModule GTypeModule;
typedef struct _GTypeModuleClass GTypeModuleClass;
struct _GTypeModuleClass { uint8_t _data[184]; };
typedef struct _GTypePlugin GTypePlugin;
typedef struct _GTypePluginClass GTypePluginClass;
struct _GTypePluginClass { uint8_t _data[48]; };
typedef void* GTypePluginCompleteInterfaceInfo;
typedef void* GTypePluginCompleteTypeInfo;
typedef void* GTypePluginUnuse;
typedef void* GTypePluginUse;
typedef struct _GTypeQuery GTypeQuery;
struct _GTypeQuery { uint8_t _data[24]; };
typedef struct _GTypeValueTable GTypeValueTable;
struct _GTypeValueTable { uint8_t _data[64]; };
typedef struct _GValue GValue;
struct _GValue { uint8_t _data[24]; };
typedef struct _GValueArray GValueArray;
struct _GValueArray { uint8_t _data[24]; };
typedef void* GValueTransform;
typedef void* GWeakNotify;
typedef struct _GWeakRef GWeakRef;
struct _GWeakRef {};
typedef struct _G_Value__data__union G_Value__data__union;
struct _G_Value__data__union { uint8_t _data[8]; };
typedef struct _GUdevClient GUdevClient;
typedef struct _GUdevClientClass GUdevClientClass;
typedef struct _GUdevClientPrivate GUdevClientPrivate;
typedef struct _GUdevDevice GUdevDevice;
typedef struct _GUdevDeviceClass GUdevDeviceClass;
typedef struct _GUdevDevicePrivate GUdevDevicePrivate;
typedef uint32_t GUdevDeviceType;
typedef struct _GUdevEnumerator GUdevEnumerator;
typedef struct _GUdevEnumeratorClass GUdevEnumeratorClass;
typedef struct _GUdevEnumeratorPrivate GUdevEnumeratorPrivate;
extern GUdevClient* g_udev_client_new(char**);
extern GUdevDevice* g_udev_client_query_by_device_file(GUdevClient*, char*);
extern GUdevDevice* g_udev_client_query_by_device_number(GUdevClient*, GUdevDeviceType, uint64_t);
extern GList* g_udev_client_query_by_subsystem(GUdevClient*, char*);
extern GUdevDevice* g_udev_client_query_by_subsystem_and_name(GUdevClient*, char*, char*);
extern GUdevDevice* g_udev_client_query_by_sysfs_path(GUdevClient*, char*);
extern GType g_udev_client_get_type();
extern char* g_udev_device_get_action(GUdevDevice*);
extern char* g_udev_device_get_device_file(GUdevDevice*);
extern char** g_udev_device_get_device_file_symlinks(GUdevDevice*);
extern uint64_t g_udev_device_get_device_number(GUdevDevice*);
extern GUdevDeviceType g_udev_device_get_device_type(GUdevDevice*);
extern char* g_udev_device_get_devtype(GUdevDevice*);
extern char* g_udev_device_get_driver(GUdevDevice*);
extern int g_udev_device_get_is_initialized(GUdevDevice*);
extern char* g_udev_device_get_name(GUdevDevice*);
extern char* g_udev_device_get_number(GUdevDevice*);
extern GUdevDevice* g_udev_device_get_parent(GUdevDevice*);
extern GUdevDevice* g_udev_device_get_parent_with_subsystem(GUdevDevice*, char*, char*);
extern char* g_udev_device_get_property(GUdevDevice*, char*);
extern int g_udev_device_get_property_as_boolean(GUdevDevice*, char*);
extern double g_udev_device_get_property_as_double(GUdevDevice*, char*);
extern int32_t g_udev_device_get_property_as_int(GUdevDevice*, char*);
extern char** g_udev_device_get_property_as_strv(GUdevDevice*, char*);
extern uint64_t g_udev_device_get_property_as_uint64(GUdevDevice*, char*);
extern char** g_udev_device_get_property_keys(GUdevDevice*);
extern uint64_t g_udev_device_get_seqnum(GUdevDevice*);
extern char* g_udev_device_get_subsystem(GUdevDevice*);
extern char* g_udev_device_get_sysfs_attr(GUdevDevice*, char*);
extern int g_udev_device_get_sysfs_attr_as_boolean(GUdevDevice*, char*);
extern double g_udev_device_get_sysfs_attr_as_double(GUdevDevice*, char*);
extern int32_t g_udev_device_get_sysfs_attr_as_int(GUdevDevice*, char*);
extern char** g_udev_device_get_sysfs_attr_as_strv(GUdevDevice*, char*);
extern uint64_t g_udev_device_get_sysfs_attr_as_uint64(GUdevDevice*, char*);
extern char** g_udev_device_get_sysfs_attr_keys(GUdevDevice*);
extern char* g_udev_device_get_sysfs_path(GUdevDevice*);
extern char** g_udev_device_get_tags(GUdevDevice*);
extern uint64_t g_udev_device_get_usec_since_initialized(GUdevDevice*);
extern int g_udev_device_has_property(GUdevDevice*, char*);
extern int g_udev_device_has_sysfs_attr(GUdevDevice*, char*);
extern GType g_udev_device_get_type();
extern GUdevEnumerator* g_udev_enumerator_new(GUdevClient*);
extern GUdevEnumerator* g_udev_enumerator_add_match_is_initialized(GUdevEnumerator*);
extern GUdevEnumerator* g_udev_enumerator_add_match_name(GUdevEnumerator*, char*);
extern GUdevEnumerator* g_udev_enumerator_add_match_property(GUdevEnumerator*, char*, char*);
extern GUdevEnumerator* g_udev_enumerator_add_match_subsystem(GUdevEnumerator*, char*);
extern GUdevEnumerator* g_udev_enumerator_add_match_sysfs_attr(GUdevEnumerator*, char*, char*);
extern GUdevEnumerator* g_udev_enumerator_add_match_tag(GUdevEnumerator*, char*);
extern GUdevEnumerator* g_udev_enumerator_add_nomatch_subsystem(GUdevEnumerator*, char*);
extern GUdevEnumerator* g_udev_enumerator_add_nomatch_sysfs_attr(GUdevEnumerator*, char*, char*);
extern GUdevEnumerator* g_udev_enumerator_add_sysfs_path(GUdevEnumerator*, char*);
extern GList* g_udev_enumerator_execute(GUdevEnumerator*);
extern GType g_udev_enumerator_get_type();
struct _GUdevClientClass { uint8_t _data[208]; };
struct _GUdevClientPrivate {};
struct _GUdevDeviceClass { uint8_t _data[200]; };
struct _GUdevDevicePrivate {};
struct _GUdevEnumeratorClass { uint8_t _data[200]; };
struct _GUdevEnumeratorPrivate {};
